/*
 * Copyright (C) 2000-2008 Jens Nixdorf and various contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to
 * deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 * sell copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies of the Software, its documentation and marketing & publicity
 * materials, and acknowledgment shall be given in the documentation, materials
 * and software packages that this Software was used.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
package org.mopore.jat.board;

import java.awt.AWTException;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;

import org.mopore.jat.util.ImageService;

public class ShowImageFrame extends JFrame {

    /**
     * Comment for <code>serialVersionUID</code>
     */
    private static final long serialVersionUID = -1299913933838369380L;

    private final BufferedImage image;

    /**
     * This is the default constructor
     * 
     * @param updateController
     * @throws Exception
     */
    public ShowImageFrame(BufferedImage image) throws Exception {
        super();
        this.image = image;
        String title = "image from jni";
        setTitle(title);
        initialize();
    }

    /**
     * This method initializes this
     * 
     * @return void
     * @throws AWTException
     * @throws IOException
     * @throws FileNotFoundException
     */
    private void initialize() throws Exception {

        int width = image.getWidth();
        int height = image.getHeight();

        
        setSize(width, height);
        setUndecorated( true );
        Toolkit toolkit = this.getToolkit();

        double screenWidth = toolkit.getScreenSize().getWidth();
        double screenHeight = toolkit.getScreenSize().getHeight();

        final int x = (int) ((screenWidth - getWidth()) / 2);
        final int y = (int) ((screenHeight - getHeight()) / 2);

        setLocation(x, y);
        setResizable(true);

        final JPanel backgroundPanel = new JPanel() {
            /**
             * Comment for <code>serialVersionUID</code>
             */
            private static final long serialVersionUID = 1L;

            @Override
			public void paintComponent(Graphics g) {
                Graphics2D g2 = (Graphics2D) g;
                g2.drawImage(image, 0, 0, getWidth(), getHeight(), null);
                setOpaque(false);
                g.dispose();
            }
        };

        setContentPane(backgroundPanel);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) throws Exception {

        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        
        BufferedImage image = ImageService.load( "/images/app/exampleMessageWindow.PNG" );
        new ShowImageFrame(image);
    }
}
